# Create your views here.

from django.db.models import Q, Max, Min, Count
from django.shortcuts import render_to_response, get_object_or_404
from widpy.data.models import * 
from django.http import HttpResponse, HttpResponseRedirect, QueryDict
from django.template import Context, loader
import random, string

def add_widget(request,w_id):
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	
	if(is_auth):
		add = get_object_or_404(Widget, pk=w_id)
		idpest = Q(usuario=usuario_id) & Q(estado__exact=1)
		idpestanha1 = Pestanha.objects.get(idpest)
		idwid = Q(id=w_id)
		idwid1 = Widget.objects.get(idwid)
		valor_key=Pestxwidxparam.objects.aggregate(Max('id'))
		if (valor_key['id__max']):
			keypestxwid=valor_key['id__max'] + 1
		else:
			keypestxwid = 1
		p = Pestxwidxparam(id=keypestxwid,pestanha=idpestanha1,widget=idwid1,nrocolumna=1,nrocajacontenedora=keypestxwid,altura=120,color='azul',estado=1)
		p.save()

		return HttpResponseRedirect('/search/')
	#----------Agregado
	else:
		agregarwid=Widget.objects.get(id=w_id)
		maxwid = 0
		maxidbox = 0
		maxcantidad = 0
		if "max_idwid" in request.COOKIES:
			idwid = request.COOKIES["max_idwid"]
			maxwid = string.atoi(idwid,10)
			maxwid = maxwid + 1
		if "max_boxwid" in request.COOKIES:
			idbox = request.COOKIES["max_boxwid"]
			maxidbox = string.atoi(idbox,10)	
			maxidbox = maxidbox + 1
		if "cantidadwid" in request.COOKIES:
			cantidad = request.COOKIES["cantidadwid"]
			cantidadwid = string.atoi(cantidad,10)
			cantidadwid = cantidadwid + 1
			
		if "pes_active" in request.COOKIES:
			pest_activa = request.COOKIES["pes_active"]
				
		if "widxpest"+pest_activa in request.COOKIES:
			wid_pest = request.COOKIES["widxpest"+pest_activa]
		if "cantxwidxpest"+pest_activa in request.COOKIES:
			cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
			cantwidxpest = string.atoi(cant_wid_pest,10)
			cantwidxpest = cantwidxpest + 1
		if "widxpest"+pest_activa in request.COOKIES:
				wid_pest = request.COOKIES["widxpest"+pest_activa]
		if "cantxwidxpest"+pest_activa in request.COOKIES:
				cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
				cantwidxpest = string.atoi(cant_wid_pest,10)
				cantwidxpest = cantwidxpest + 1
			
		response = HttpResponseRedirect('/search/')
		#Datos agregados a cookies &nrocolumna=&altura=&url=&nombre_widget=&id_wid=&nrocajacontenedora=&color=&estado=
		response.set_cookie("w"+str(maxwid), "1&120&"+agregarwid.url+"&"+agregarwid.nombre_widget+"&"+str(agregarwid.id)+"&"+str(maxidbox)+"&azul&1", 365*24*60*60)
		response.set_cookie("max_idwid", maxwid, 365*24*60*60)
		response.set_cookie("max_boxwid", maxidbox, 365*24*60*60)
		response.delete_cookie("cantidadwid")
		response.set_cookie("cantidadwid", cantidadwid, 365*24*60*60)
		if wid_pest != "":
			response.set_cookie("widxpest"+pest_activa, wid_pest+"&w"+str(maxwid), 365*24*60*60)
			response.set_cookie("cantxwidxpest"+pest_activa, cantwidxpest, 365*24*60*60)
		else:
			response.set_cookie("widxpest"+pest_activa, "w"+str(maxwid), 365*24*60*60)
			response.set_cookie("cantxwidxpest"+pest_activa, 1, 365*24*60*60)
		return response
	 #-----------------------------------------	
def encontrar_wid(request,indwid):
	found=0
	#Recorre hasta encontrar el valor de widget a agregar.
	while found==0:
		indwid=indwid+1
		es_none=request.COOKIES.get("w"+str(indwid), None)
		if es_none:
			return indwid

def inicio_registrados(request):
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	#cluser =  Q(id__icontains=user_id)
	#if cluser:
	#   ituser = User.objects.filter(cluser).distinct()
	es_search = 0
	idgooglesearch = 0
	valsearch = ""
	pesactual = 0
	cpes=0
	des=0
	administ=0
	superadmin=0
	grupo = 0
	Listapes = []
	Listanumpes = []
	if(is_auth):
		tipouser = User.objects.get(id=user_id)
		de = Q(groups__id='1') & Q(id=user_id)
		des = User.objects.filter(de)
		ad = Q(groups__id='2') & Q(id=user_id)
		administ = User.objects.filter(ad)
		#sup = Q(groups__id='3') & Q(id=user_id)
		#superadmin = User.objects.filter(sup)
	
	#si el usuario esta autenticado:
	if(is_auth):
		#---- Pestanha - Usuarios - Widgets
		tienepes = Pestanha.objects.filter(usuario=tipouser)
		if not (tienepes):
			valormaximo = Pestanha.objects.aggregate(Max('id'))
			nromax = valormaximo['id__max']
			nuevapestanha = Pestanha(id=nromax, usuario_id=user_id, tema_id=1, layout_id=1, nombre="Main", estado=1, nro_orden=1)
			nuevapestanha.save()
			
		idpest = Q(usuario=user_id) & Q(estado__exact=1)
		idpestanha = Pestanha.objects.get(idpest)
		listarpestanhas = Pestanha.objects.filter(usuario=tipouser)
		itemwidgetdatos = Pestxwidxparam.objects.filter(pestanha=idpestanha).order_by('nrocajacontenedora')

		contadorColumna1 = 0
		contadorColumna2 = 0
		contadorColumna3 = 0
		####Vemos si existe los widgets necesario
		for listcol in Pestxwidxparam.objects.filter(pestanha=idpestanha):
			if listcol.nrocolumna == 1:
				contadorColumna1=contadorColumna1 + 1
			if listcol.nrocolumna == 2:
				contadorColumna2=contadorColumna2 + 1
			if listcol.nrocolumna == 3:
				contadorColumna3=contadorColumna3 + 1
		
		#------ Modelos - Columnas - Pestanhas
		cantidadcolumn = idpestanha.layout.cantidadcolumnas
		
		if cantidadcolumn == 1:
			mincol1 = Pestxwidxparam.objects.filter(nrocolumna=1).aggregate(Min('nrocajacontenedora'))
			if contadorColumna1 != 0:
				valormincol1 = mincol1['nrocajacontenedora__min']
			else:
				valormincol1=0
			valormincol2 = 0
			valormincol3 = 0
		elif cantidadcolumn == 2:
			mincol1 = Pestxwidxparam.objects.filter(nrocolumna=1).aggregate(Min('nrocajacontenedora'))
			mincol2 = Pestxwidxparam.objects.filter(nrocolumna=2).aggregate(Min('nrocajacontenedora'))
			if contadorColumna1 != 0:
				valormincol1 = mincol1['nrocajacontenedora__min']
			else:
				valormincol1 = 0
			if contadorColumna2 != 0:
				valormincol2 = mincol2['nrocajacontenedora__min']
			else:
				valormincol2 = 0
			valormincol3 = 0
		elif cantidadcolumn == 3:			
			mincol1 = Pestxwidxparam.objects.filter(nrocolumna=1).aggregate(Min('nrocajacontenedora'))
			mincol2 = Pestxwidxparam.objects.filter(nrocolumna=2).aggregate(Min('nrocajacontenedora'))
			mincol3 = Pestxwidxparam.objects.filter(nrocolumna=3).aggregate(Min('nrocajacontenedora'))
			if contadorColumna1 != 0:
				valormincol1 = mincol1['nrocajacontenedora__min']
			else:
				valormincol1 = 0
			if contadorColumna2 != 0:
				valormincol2 = mincol2['nrocajacontenedora__min']
			else:
				valormincol2 = 0
			if contadorColumna3 != 0:
				valormincol3 = mincol3['nrocajacontenedora__min']
			else:
				valormincol3 = 0
		#-------------------- Google Search --------------------
		busquedaDatos = Q(usuario=user_id)
		es_none=Pestxdatosxgoogle.objects.filter(busquedaDatos).count()
		opcionpes=Q(usuario=user_id) & Q(estado__icontains=1)
		pestanhactual = Pestanha.objects.get(opcionpes)
		#return render_to_response('webpage/inicio.html', {'prub': pestanhactual.id}) 
		if es_none != 0:
			datosGoogle = Pestxdatosxgoogle.objects.get(busquedaDatos)
			idgooglesearch = datosGoogle.pestanha.id
			valsearch = datosGoogle.datos
			if idgooglesearch == pestanhactual.id:
				es_search = 1
		#----------- Pestanhas - Usuarios ---------------------------
		clause =  Q(usuario__id__exact=user_id)
		items = Pestanha.objects.filter(clause).order_by("nro_orden")
		b = Pestanha.objects.filter(usuario=user_id).count()
		pes = Q(usuario__id__exact=user_id) & Q(estado__icontains=1)
		pesactual = Pestanha.objects.filter(pes).distinct()
		buscartema = Pestanha.objects.get(usuario=user_id, estado=1)
		p = Tema.objects.get(id=buscartema.tema_id)
		if(b <= 1):
			b=0
		
		if (des):
			grupo = grupo + 1
			des = 1
		else:
			des = 0
		if (administ):
			grupo = grupo + 1
			des = 0
			administ = 1
		else:
			administ = 0
		if (request.user.is_superuser):
			grupo = grupo + 1
			des = 0
			administ = 0
			superadmin = 1
		else:
			superadmin = 0

		tema = Pestanha.objects.get(usuario__id__exact=user_id, estado=1)
	else:
		wid = []
		cantcol = 0
		modcol = 0
		idgoogleS = -1
		if "nro_pes" in request.COOKIES:
			cant_pes = request.COOKIES["nro_pes"]
			cpes = string.atoi(cant_pes,10)
			#problema numeros
			for i in range(1, cpes+1):
				if "np"+str(i) in request.COOKIES:
					Listapes.append((request.COOKIES["np"+str(i)], int(i)))
					Listanumpes.append(i)
			if "pes_active" in request.COOKIES:
				pesa = request.COOKIES["pes_active"]
				tabactual = string.atoi(pesa,10)
			#widget1 = request.COOKIES["w1"]
			#long = len(widget1)
			#wid = []
			#ind=0
			#for i in widget1.split('&'):
			#	wid.insert(ind,i)
			#	ind=ind+1
			if "t1" in request.COOKIES:
				temactual = request.COOKIES["t"+str(tabactual)]
			else:
				temactual = ""
			
			#-------------------- gS -------
			es_noneidgoogle=request.COOKIES.get("idGS", None)
			if es_noneidgoogle:
				if "idGS" in request.COOKIES:
					idgoogleS = int(request.COOKIES["idGS"])
					if tabactual == idgoogleS:
						es_search=1
		else:
			cant_pes = 1
			response = HttpResponseRedirect('/inicio/')
			response.set_cookie("nro_pes", cant_pes, 365*24*60*60)
			response.set_cookie("np1", "Default", 365*24*60*60)
			response.set_cookie("pes_active", 1, 365*24*60*60)
			response.set_cookie("t1", "/media/css/style.css", 365*24*60*60)
			response.set_cookie("nt1", "1", 365*24*60*60)
			tabactual = 1
			return response

		if "cantidadwid" in request.COOKIES:
			cant_wid = request.COOKIES["cantidadwid"]
			cantwid = string.atoi(cant_wid,10)
			if "pes_active" in request.COOKIES:
				pest_activa = request.COOKIES["pes_active"]
			
			if "cantida_columna"+pest_activa in request.COOKIES:
				cant_col = request.COOKIES["cantida_columna"+pest_activa]
				cantcol = string.atoi(cant_col,10)	
			
			if "modelo_columna"+pest_activa in request.COOKIES:
				mod_col = request.COOKIES["modelo_columna"+pest_activa]
				modcol = string.atoi(mod_col,10)
			#---- gS= google Search ------		
			if es_search == 1:
				if "valor_buscado" in request.COOKIES:
					valsearch = request.COOKIES["valor_buscado"]
				
			#Verifica si es que existe algun widget en la pestanha
			es_none=request.COOKIES.get("widxpest"+pest_activa, None)
			if es_none:
				if "widxpest"+pest_activa in request.COOKIES:
						wid_pest = request.COOKIES["widxpest"+pest_activa]
				if "cantxwidxpest"+pest_activa in request.COOKIES:
						cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
						cantxwidxpest = string.atoi(cant_wid_pest,10)
	
			ind=0
			contarIndice=0
			widxp=[]
			
			if es_none:
				for each in wid_pest.split('&'):
					widxp.append(each)
				
				for i in range(0, cantxwidxpest):
					if widxp[i] in request.COOKIES:
						widget1 = request.COOKIES[widxp[i]]	   
						ind=0
						widict= dict()
						for each in widget1.split('&'):
							if ind==0:
								widict.update(columna=each)
							if ind==1:
								widict.update(altura=each)
							if ind==2:
								widict.update(url=each)
							if ind==3:
								widict.update(nombre=each)
							if ind==4:
								widict.update(id=each)
							if ind==5:
								widict.update(caja=each)
							if ind==6:
								widict.update(color=each)
							if ind==7:
								widict.update(estado=each)
							ind=ind+1	
						wid.insert(i,widict)
				#return render_to_response('webpage/inicio.html', {'prub': wid})			
		else:
			response = HttpResponseRedirect('/inicio/')
			widparacookies = Widget.objects.filter().order_by('id')
			#Datos guardados en cookies &nrocolumna=&altura=&url=&nombre_widget=&id_wid=&nrocajacontenedora=&color=&estado
			response.set_cookie("w1", "1&120&"+widparacookies[0].url+"&"+widparacookies[0].nombre_widget+"&"+str(widparacookies[0].id)+"&1&azul&1", 365*24*60*60)
			response.set_cookie("w2", "2&120&"+widparacookies[1].url+"&"+widparacookies[1].nombre_widget+"&"+str(widparacookies[1].id)+"&2&azul&1", 365*24*60*60)
			response.set_cookie("w3", "3&120&"+widparacookies[9].url+"&"+widparacookies[9].nombre_widget+"&"+str(widparacookies[9].id)+"&3&azul&1", 365*24*60*60)
			response.set_cookie("cantida_columna1", 3, 365*24*60*60)
			response.set_cookie("modelo_columna1", 1, 365*24*60*60)
			response.set_cookie("max_idwid", 3, 365*24*60*60)
			response.set_cookie("max_boxwid", 3, 365*24*60*60)
			response.set_cookie("cantidadwid", 3, 365*24*60*60)
			response.set_cookie("widxpest1", "w1&w2&w3", 365*24*60*60)
			response.set_cookie("cantxwidxpest1", 3, 365*24*60*60)
			return response
			
		if(cpes<=1):
			cpes=0
			

	#   clause =  Q(usuario__id__icontains=1)
	#   items = Pestanha.objects.filter(clause).distinct()
	#   b = Pestanha.objects.filter(usuario=1).count()
	#   buscartema = Pestanha.objects.get(usuario__id__icontains=1, estado=1)
	#Para evitar que se muestre "borrar pestanha" cuando solo hay 1 pestanha
	if(is_auth):
		return render_to_response('webpage/inicio.html', 
		{'idgoogle': idgooglesearch, 'es_buscado': es_search, 'val': valsearch, 'pes': items, 'cant_pes':b, 'user_id':user_id, 'is_auth':is_auth, 'tabactual' : buscartema.id, 'temaurl': p.url,
		'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'nombreuser': tipouser.username,
		'widgetdatos': itemwidgetdatos, 'idpestanha': listarpestanhas, 'cantidadcolumna': idpestanha.layout.cantidadcolumnas, 'modelo': idpestanha.layout.modelodecolumna, 'mincoluno':valormincol1, 'mincoldos':valormincol2, 'mincoltres':valormincol3, 'grupo': grupo})
	return render_to_response('webpage/inicio.html', 
		{'idgoogle': idgoogleS, 'es_buscado': es_search, 'val': valsearch, 'witems': wid, 'cacol':cantcol,'mod': modcol,'pes': Listapes, 'cant_pes': cpes, 'listpes': Listanumpes, 'user_id':user_id, 'is_auth':is_auth,'desarrollador' : des, 'admin' : administ, 'superadmin' : superadmin, 'tabactual' : tabactual, 'temaurl' : temactual})
	
	#return render_to_response('webpage/inicio.html', {'items': item, 'idpestanha': listarpestanhas, 'cantidadcolumna': idpestanha.layout.cantidadcolumnas, 'modelo': idpestanha.layout.modelodecolumna})


def editcolumna(request):
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	cantidadColRequest = int(request.GET.get('column'))
	modeloRequest = int(request.GET.get('numerocolumna'))
	if(is_auth):
		pestactiva = Pestanha.objects.get(Q(estado=1) & Q(usuario=usuario_id))
		cantidadColumnaActual = pestactiva.layout.cantidadcolumnas
		####contadores 
		contadorColumna1=0
		contadorColumna2=0
		contadorColumna3=0
		limitadorcantidadcol=0
		randomcol=0		
		cont=0
		####Vemos si existe los widgets necesario
		for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
			if listcol.nrocolumna == 1:
				contadorColumna1=contadorColumna1 + 1
			if listcol.nrocolumna == 2:
				contadorColumna2=contadorColumna2 + 1
			if listcol.nrocolumna == 3:
				contadorColumna3=contadorColumna3 + 1
				
		####Cambio de Columnas		
		if cantidadColRequest == 1:
			if cantidadColumnaActual != 1:
				for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
					if listcol.nrocolumna != 1 :
						listcol.nrocolumna = 1
						listcol.save()

		if cantidadColRequest == 2:
			##### OBSERVACION: De columna "2" a columna "2" queda igual. Solo cambia el modelo.
			#--- De columna "1" a columna "2"
			if cantidadColumnaActual == 1:
				for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
					if contadorColumna1 == 2:
						if cont == 0:
							listcol.nrocolumna = 2
							listcol.save()
							cont=1
					if contadorColumna1 > 2: 
						if cont == 0:
							listcol.nrocolumna = 2
							listcol.save()
							cont=1
						elif cont == 1:
							cont=0
			#--- De columna "3" a columna "2"
			if cantidadColumnaActual == 3:
				for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
					cont = random.randint(1, 2)
					if contadorColumna3 > 0:
						if listcol.nrocolumna == 3:
							listcol.nrocolumna = cont
							listcol.save()
							contadorColumna3 = contadorColumna3 - 1
							
						
		if cantidadColRequest == 3:
			#--- De columna "2" a columna "3"
			if cantidadColumnaActual == 2:
				randomcol = random.randint(1, 2)
				for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
					if randomcol == 1 and contadorColumna1 > 1:
						cont = random.randint(0, 1)
						if listcol.nrocolumna == randomcol :
							if cont == 1 :
								listcol.nrocolumna = 3
								listcol.save()
								contadorColumna1 = contadorColumna1 - 1
					if randomcol == 2 and contadorColumna2 > 1:
						cont = random.randint(0, 1)
						if listcol.nrocolumna == randomcol :
							if cont == 1 :
								listcol.nrocolumna = 3
								listcol.save()
								contadorColumna2 = contadorColumna2 - 1
								
			#--- De columna "1" a columna "3"
			if cantidadColumnaActual == 1:
				for listcol in Pestxwidxparam.objects.filter(pestanha=pestactiva):
					cont = random.randint(1, 3)
					if limitadorcantidadcol == 0 and contadorColumna1 > 1:
						limitadorcantidadcol = limitadorcantidadcol + 1
						listcol.nrocolumna = 1
						listcol.save()
						contadorColumna1 = contadorColumna1 - 1

					if limitadorcantidadcol == 1 and contadorColumna1 > 1:
						limitadorcantidadcol = limitadorcantidadcol + 1
						listcol.nrocolumna = 2
						listcol.save()
						contadorColumna1 = contadorColumna1 - 1

					if limitadorcantidadcol == 2 and contadorColumna1 > 1:
						limitadorcantidadcol = limitadorcantidadcol + 1
						listcol.nrocolumna = 3
						listcol.save()
						contadorColumna1 = contadorColumna1 - 1
						
					if listcol.nrocolumna == 1 and contadorColumna1 > 1:
						listcol.nrocolumna = cont
						listcol.save()
						contadorColumna1 = contadorColumna1 - 1
			
		idlayout = Layout.objects.get(Q(cantidadcolumnas=cantidadColRequest) & Q(modelodecolumna=modeloRequest))
		pestactiva.layout = idlayout
		pestactiva.save()   

		return HttpResponseRedirect('/inicio/')	
	else:
		#variables
		widxp=[]
		colxwid=[]
		datosincol=[]
		contadorColumna1=0
		contadorColumna2=0
		contadorColumna3=0
		limitadorcantidadcol=0
		cont=0
		
		#------------
		responsen = HttpResponseRedirect('/inicio/')
		#response.set_cookie("cantida_columna1", 3, 365*24*60*60)
		#response.set_cookie("modelo_columna1", 1, 365*24*60*60
		if "pes_active" in request.COOKIES:
				pest_activa = request.COOKIES["pes_active"]
		if "cantida_columna"+pest_activa in request.COOKIES:
				cc = request.COOKIES["cantida_columna"+pest_activa]
				cantidadColumnaActual = string.atoi(cc,10)
				
		es_none=request.COOKIES.get("widxpest"+pest_activa, None)
		if es_none:
			if "widxpest"+pest_activa in request.COOKIES:
						wid_pest = request.COOKIES["widxpest"+pest_activa]
			if "cantxwidxpest"+pest_activa in request.COOKIES:
					cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
					cantxwidxpest = string.atoi(cant_wid_pest,10)	
				
			for each in wid_pest.split('&'):
				widxp.append(each)
				
			for k in range(0, cantxwidxpest):
				datoaux = request.COOKIES[widxp[k]]
				ind = 0
				datoswid=""
				for each in datoaux.split('&'):
					if ind==0:
						nrocol=int(each)
						#guarda el valor de la columna correspondiente a
						#cada widget.
						colxwid.append(nrocol)
						if each == '1':
							contadorColumna1=contadorColumna1 + 1
						if each == '2':
							contadorColumna2=contadorColumna2 + 1
						if each == '3':
							contadorColumna3=contadorColumna3 + 1
					if ind == 1:
						datoswid=each
					if ind > 1:
						datoswid=datoswid+"&"+each
					ind = ind + 1
				#guarda los valores de cada widgets menos el nro de 
				# al que pertenece columna.	
				datosincol.append(datoswid)
			#return render_to_response('webpage/inicio.html', {'prub': datosincol})		
			####Cambio de Columnas		
			if cantidadColRequest == 1:
				if cantidadColumnaActual != 1:
					for k in range(0, cantxwidxpest):
						responsen.delete_cookie(widxp[k])
						responsen.set_cookie(widxp[k], "1&"+datosincol[k]+"", 365*24*60*60)
					responsen.delete_cookie("cantida_columna"+pest_activa)
					responsen.set_cookie("cantida_columna"+pest_activa, 1, 365*24*60*60)
					
			if cantidadColRequest == 2:
				##### OBSERVACION: De columna "2" a columna "2" queda igual. Solo cambia el modelo.
				#--- De columna "1" a columna "2"
				if cantidadColumnaActual == 1:
					for k in range(0, cantxwidxpest):
						if contadorColumna1 == 2:
							if cont == 0:
								responsen.delete_cookie(widxp[k])
								responsen.set_cookie(widxp[k], "2&"+datosincol[k]+"", 365*24*60*60)
								cont=1
						if contadorColumna1 > 2: 
							if cont == 0:
								responsen.delete_cookie(widxp[k])
								responsen.set_cookie(widxp[k], "2&"+datosincol[k]+"", 365*24*60*60)
								cont=1
							elif cont == 1:
								cont=0
					responsen.delete_cookie("cantida_columna"+pest_activa)
					responsen.set_cookie("cantida_columna"+pest_activa, cantidadColRequest, 365*24*60*60)
				#--- De columna "3" a columna "2"
				if cantidadColumnaActual == 3:
					for k in range(0, cantxwidxpest):
						cont = random.randint(1, 2)
						if contadorColumna3 > 0:
							if colxwid[k] == 3:
								responsen.delete_cookie(widxp[k])
								responsen.set_cookie(widxp[k], str(cont)+"&"+datosincol[k]+"", 365*24*60*60)
								contadorColumna3 = contadorColumna3 - 1
					responsen.delete_cookie("cantida_columna"+pest_activa)
					responsen.set_cookie("cantida_columna"+pest_activa, cantidadColRequest, 365*24*60*60)
					
			if cantidadColRequest == 3:
				#--- De columna "2" a columna "3"
				if cantidadColumnaActual == 2:
					randomcol = random.randint(1, 2)
					for k in range(0, cantxwidxpest):
						if randomcol == 1 and contadorColumna1 > 1:
							cont = random.randint(0, 1)
							if colxwid[k] == randomcol :
								if cont == 1 :
									responsen.delete_cookie(widxp[k])
									responsen.set_cookie(widxp[k], "3&"+datosincol[k]+"", 365*24*60*60)
									contadorColumna1 = contadorColumna1 - 1
						if randomcol == 2 and contadorColumna2 > 1:
							cont = random.randint(0, 1)
							if colxwid[k] == randomcol :
								if cont == 1 :
									responsen.delete_cookie(widxp[k])
									responsen.set_cookie(widxp[k], "3&"+datosincol[k]+"", 365*24*60*60)
									contadorColumna2 = contadorColumna2 - 1
					responsen.delete_cookie("cantida_columna"+pest_activa)
					responsen.set_cookie("cantida_columna"+pest_activa, cantidadColRequest, 365*24*60*60)
					
				#--- De columna "1" a columna "3"
				if cantidadColumnaActual == 1:
					for k in range(0, cantxwidxpest):
						cont = random.randint(1, 3)
						if limitadorcantidadcol == 0 and contadorColumna1 > 1:
							limitadorcantidadcol = limitadorcantidadcol + 1
							ver="2&"+datosincol[k]
							responsen.delete_cookie(widxp[k])
							responsen.set_cookie(widxp[k], "2&"+datosincol[k]+"", 365*24*60*60)
							contadorColumna1 = contadorColumna1 - 1
							#return render_to_response('webpage/inicio.html', {'prub': ver})

						elif limitadorcantidadcol == 1 and contadorColumna1 > 1:
							limitadorcantidadcol = limitadorcantidadcol + 1
							responsen.delete_cookie(widxp[k])
							responsen.set_cookie(widxp[k], "3&"+datosincol[k]+"", 365*24*60*60)
							contadorColumna1 = contadorColumna1 - 1
							
						elif colxwid[k] == 1 and contadorColumna1 > 1:
							responsen.delete_cookie(widxp[k])
							responsen.set_cookie(widxp[k], str(cont)+"&"+datosincol[k]+"", 365*24*60*60)
							contadorColumna1 = contadorColumna1 - 1
							
					#return render_to_response('webpage/inicio.html', {'prub': contadorColumna1})
					responsen.delete_cookie("cantida_columna"+pest_activa)
					responsen.set_cookie("cantida_columna"+pest_activa, cantidadColRequest, 365*24*60*60)	
					
							
			responsen.delete_cookie("modelo_columna"+pest_activa)
			responsen.set_cookie("modelo_columna"+pest_activa, modeloRequest, 365*24*60*60)			
			return responsen
	return HttpResponseRedirect('/inicio/')
		

def refreshpestanha(request,p_id):   
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	idpestinicial = Pestanha.objects.get(Q(estado=1) & Q(usuario=usuario_id))
	idpestinicial.estado = 0
	idpestinicial.save()
	idpestactual = Pestanha.objects.get(id=p_id)
	idpestactual.estado = 1
	idpestactual.save()

	items = Pestxwidxparam.objects.filter(pestanha=idpestactual)
  
	return render_to_response('webpage/inicio.html', {'items': items, 'idpestanha': listarpestanhas, 'cantidadcolumna': idpestactual.layout.cantidadcolumnas, 'modelo': idpestactual.layout.modelodecolumna})	

def mayor(lista):
	max=0
	for i in range(0,len(lista)):
		if (max<lista[i]):
			max=lista[i] 
	return max

def listar_valores(request,box):
	if "cantidadwid" in request.COOKIES:
		cant_wid = request.COOKIES["cantidadwid"]
		cantwid = string.atoi(cant_wid,10)		
		listar_wid=[]	
		contarIndice=0
		for k in range(1, cantwid+1):
			#Recorre hasta encontrar el valor de widget.
			indiceBuscado=encontrar_wid(request,contarIndice)
			contarIndice=indiceBuscado
			if contarIndice!=int(box):
				listar_wid.append(indiceBuscado)
		maxvalor=mayor(listar_wid)
	return maxvalor
				
def deletebox(request):
	cajaborrar = request.GET.get('idcaja')
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		quitarwid = Pestxwidxparam.objects.get(nrocajacontenedora=cajaborrar)
		quitarwid.delete()
		return HttpResponseRedirect('/inicio/')
	else:
		#response = render_to_response('webpage/inicio.html', {'prub': cajaborrar})
		widxp=[]
		response = HttpResponseRedirect('/inicio/')
		if "cantidadwid" in request.COOKIES:
			cantidad = request.COOKIES["cantidadwid"]
			cant = string.atoi(cantidad,10)	
			cant = cant - 1
			response.delete_cookie("cantidadwid")
			response.set_cookie("cantidadwid", cant, 365*24*60*60)
			response.delete_cookie("w"+str(cajaborrar))
			
			if "pes_active" in request.COOKIES:
				pest_activa = request.COOKIES["pes_active"]
			if "widxpest"+pest_activa in request.COOKIES:
					wid_pest = request.COOKIES["widxpest"+pest_activa]
			if "cantxwidxpest"+pest_activa in request.COOKIES:
					cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
					cantxwidxpest = string.atoi(cant_wid_pest,10)
					cantxwidxpest = cantxwidxpest - 1
					
			for each in wid_pest.split('&'):
				if each != ("w"+str(cajaborrar)):
					widxp.append(each)
				
			for k in range(0, cantxwidxpest):
				if k == 0:
					datoswid = widxp[k]
				else:
					datoswid = datoswid+"&"+widxp[k]
			
			response.delete_cookie("widxpest"+pest_activa)
			response.delete_cookie("cantxwidxpest"+pest_activa)	
			
			if cantxwidxpest != 0:
				response.set_cookie("widxpest"+pest_activa, datoswid, 365*24*60*60)
				response.set_cookie("cantxwidxpest"+pest_activa, cantxwidxpest, 365*24*60*60)
			else:
				response.set_cookie("widxpest"+pest_activa, "", 365*24*60*60)
				response.set_cookie("cantxwidxpest"+pest_activa, 0, 365*24*60*60)
				
			maxvalor=listar_valores(request,cajaborrar)
			response.delete_cookie("max_idwid")
			response.delete_cookie("max_boxwid")
			response.set_cookie("max_idwid", maxvalor, 365*24*60*60)
			response.set_cookie("max_boxwid", maxvalor, 365*24*60*60)
			
			#return render_to_response('webpage/inicio.html', {'prub': listar_valores(request,cajaborrar)})
			return response
	
def colorbox(request):
	idcaja = request.GET.get('idcaja1')
	colorcaja = request.GET.get('colorcaja')
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		if colorcaja != '':
			editcaja = Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
			editcaja.color = colorcaja
			editcaja.save()
	else:
		response = HttpResponseRedirect('/inicio/')
		ind=0
		wid = request.COOKIES["w"+str(idcaja)]
		for each in wid.split('&'):
				if ind==0:
					columna=each
				if ind==1:
					altura=each
				if ind==2:
					url=each
				if ind==3:
					nombre=each
				if ind==4:
					id=each
				if ind==5:
					caja=each
				if ind==6:
					color=each
				if ind==7:
					estado=each
				ind=ind+1
		response.delete_cookie("w"+str(idcaja))
		response.set_cookie("w"+str(idcaja), columna+"&"+altura+"&"+url+"&"+nombre+"&"+id+"&"+caja+"&"+colorcaja+"&"+estado, 365*24*60*60)
		return response
	return HttpResponseRedirect('/inicio/')	
	
def tamanhobox(request):
	idcaja = request.GET.get('idcaja2')
	alturacaja = request.GET.get('altura')
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		editcaja = Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
		editcaja.altura = alturacaja
		editcaja.save()
		return HttpResponseRedirect('/inicio/')
	else:
		response = HttpResponseRedirect('/inicio/')
		ind=0
		wid = request.COOKIES["w"+str(idcaja)]
		for each in wid.split('&'):
				if ind==0:
					columna=each
				if ind==1:
					altura=each
				if ind==2:
					url=each
				if ind==3:
					nombre=each
				if ind==4:
					id=each
				if ind==5:
					caja=each
				if ind==6:
					color=each
				if ind==7:
					estado=each
				ind=ind+1
		response.delete_cookie("w"+str(idcaja))
		response.set_cookie("w"+str(idcaja), columna+"&"+alturacaja+"&"+url+"&"+nombre+"&"+id+"&"+caja+"&"+color+"&"+estado, 365*24*60*60)
		return response
	
def verificarvalor(datowidactual,tamanholist,listactual):
	for i in range(0, tamanholist):
		if datowidactual == ("w"+str(listactual[i])):
			return 1
	return 0
	
def moviendowidgets(request):
	idcaja = int(request.GET.get('numerocaja'))
	idcolumna = int(request.GET.get('numerocolumna'))
	idboxunder = int(request.GET.get('cajaunder', ''))
	idmoveracolumna = int(request.GET.get('moveracolumna'))
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		cantidadcolumna = Pestxwidxparam.objects.filter(nrocolumna=idcolumna).aggregate(Count('nrocajacontenedora'))
		
		if idmoveracolumna != 0 and cantidadcolumna['nrocajacontenedora__count'] == 0:
			wid=Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
			wid.nrocolumna=idmoveracolumna
			wid.save()
			
		if idmoveracolumna != 0 and cantidadcolumna['nrocajacontenedora__count'] != 0:
			listauxiliar=[]
			pos=0
			widindex=0
			wid=Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
			listauxiliar.insert(widindex,wid)
			valrescolumna = Pestxwidxparam.objects.filter(nrocolumna=idcolumna).order_by('nrocajacontenedora')
			for each in valrescolumna:
				pos=pos+1
				listauxiliar.insert(widindex,each)
				
			wid.nrocajacontenedora=idcaja
			wid.nrocolumna=idcolumna
			wid.save()
			
			valrescolumna = Pestxwidxparam.objects.filter(nrocolumna=idcolumna).order_by('-nrocajacontenedora')
			widindex=-1
			for each in valrescolumna:
				widindex=widindex+1
				listauxiliar[widindex].nrocajacontenedora=each.nrocajacontenedora
				listauxiliar[widindex].save()
		
		if idboxunder != 0 and idboxunder != '':
			listauxiliar=[]
			pos=0
			widindex=0
			valrescolumna = Pestxwidxparam.objects.filter(nrocolumna=idcolumna).order_by('nrocajacontenedora')
			for each in valrescolumna:
				pos=pos+1
				if each.nrocajacontenedora == idboxunder and each.nrocajacontenedora != idcaja:
					listauxiliar.insert(pos,each)
					pos=pos+1
					wid=Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
					listauxiliar.insert(pos,wid)
				elif each.nrocajacontenedora != idcaja:
					listauxiliar.insert(pos,each)
			
			wid.nrocajacontenedora=idcaja
			wid.nrocolumna=idcolumna
			wid.save()
			
			valrescolumna = Pestxwidxparam.objects.filter(nrocolumna=idcolumna).order_by('nrocajacontenedora')
			
			widindex=-1
			for each in valrescolumna:
				widindex=widindex+1
				listauxiliar[widindex].nrocajacontenedora=each.nrocajacontenedora
				listauxiliar[widindex].save()
			
			return
	else: 
		#variables
		widxp=[]
		cajaxwid=[]
		colxwid=[]
		datosin_nrocaja_primera=[]
		datosin_nrocaja_segunda=[]
		cont=0
		#------------
		responsen = HttpResponseRedirect('/inicio/')
		
		if "pes_active" in request.COOKIES:
				pest_activa = request.COOKIES["pes_active"]
				
		es_none=request.COOKIES.get("widxpest"+pest_activa, None)
		if es_none:
			if "widxpest"+pest_activa in request.COOKIES:
				wid_pest = request.COOKIES["widxpest"+pest_activa]
			if "cantxwidxpest"+pest_activa in request.COOKIES:
				cant_wid_pest = request.COOKIES["cantxwidxpest"+pest_activa]
				cantxwidxpest = string.atoi(cant_wid_pest,10)	
				
			for each in wid_pest.split('&'):
				widxp.append(each)
			
			contadorColumna=0
			
			for k in range(0, cantxwidxpest):
				datoaux = request.COOKIES[widxp[k]]
				ind = 0
				datoswid_datoswid_primera=""
				datoswid_datoswid_segunda=""
				for each in datoaux.split('&'):
					if ind == 0:
						nrocol=int(each)
						#guarda el valor de la columna correspondiente a
						#cada widget.
						colxwid.append(nrocol)	
						if idmoveracolumna != 0 and nrocol == idmoveracolumna:
							contadorColumna=contadorColumna + 1
					if ind==1:
						datoswid_primera=each
					if ind==2:
						datoswid_primera=datoswid_primera+"&"+each
					if ind==3:
						datoswid_primera=datoswid_primera+"&"+each
					if ind==4:
						datoswid_primera=datoswid_primera+"&"+each
					if ind==5:
						nrocaja=int(each)
						#guarda el valor de la caja que contiene al widget.
						cajaxwid.append(nrocol)
						if nrocaja == idcaja:
							widamover = k
							idcajawidamover = each
					if ind==6:
						datoswid_segunda=each
					if ind==7:
						datoswid_segunda=datoswid_segunda+"&"+each
					ind = ind + 1	
				#guarda todos los datos correspondientes al widget menos el numero de caja	
				datosin_nrocaja_primera.append(datoswid_primera)
				datosin_nrocaja_segunda.append(datoswid_segunda)
			#Si idmoveracolumna != 0 (!=0 significa que coloco la caja al final de la columna) 
			#y la columna destino se encuentra vacia.	
			if idmoveracolumna != 0 and contadorColumna == 0:
				responsen.delete_cookie(widxp[widamover])	
				responsen.set_cookie(widxp[widamover], str(idmoveracolumna)+"&"+datosin_nrocaja_primera[widamover]+"&"+idcajawidamover+"&"+datosin_nrocaja_segunda[widamover], 365*24*60*60)
				return responsen
			#Si la columna destino no esta vacia, ordena el nro de cajas
			#de forma ascendente. (!=0 significa que coloco la caja al final de la columna) 	
			if idmoveracolumna != 0 and contadorColumna != 0:
				lisdecol=[]
				listaordenada=[]
				ind=0
				widgetactual = request.COOKIES[widxp[widamover]]	
				for each in widgetactual.split('&'):
					if ind == 0:
						esvalorcol=int(each)
					if ind == 5:
						#if esvalorcol != idmoveracolumna:
						esvalorcaja=int(each)
						lisdecol.append(esvalorcaja)
					ind=ind+1
				#return render_to_response('webpage/inicio.html', {"prub": widxp[widamover]})		
				if len(lisdecol) != 0:	
					for k in range(0, cantxwidxpest):
						datoaux = request.COOKIES[widxp[k]]
						ind = 0
						for each in datoaux.split('&'):
							if ind == 0:
								nrocol=int(each)
							if ind == 5:
								if nrocol == idmoveracolumna:
									nrobox=int(each)
									if nrobox != esvalorcaja:
										lisdecol.append(nrobox)
							ind=ind+1
					#return render_to_response('webpage/inicio.html', {"prub": lisdecol})	
					cantidad_elementos=len(lisdecol)
					listaordenada=lisdecol[:]
					listaordenada.sort()
					
					for k in range(0, cantidad_elementos):
						eliminar="w"+str(lisdecol[k])
						responsen.delete_cookie(eliminar)
						
					widAcambiar=[]
					
					for j in range(0, cantidad_elementos):
						valorBuscado="w"+str(lisdecol[j])
						valorEncontrado=widxp.index(valorBuscado)
						widAcambiar.append(valorEncontrado)
					
					for k in range(0, cantidad_elementos):
						responsen.set_cookie("w"+str(listaordenada[k]), str(idmoveracolumna)+"&"+datosin_nrocaja_primera[widAcambiar[k]]+"&"+str(listaordenada[k])+"&"+datosin_nrocaja_segunda[widAcambiar[k]], 365*24*60*60)
		
					return responsen
					
			#Si idboxunder !=0 entonces el widget es colocado sobre otra caja 	
			if idboxunder != 0 and idboxunder != '':
				listCaja=[]
				listCajaOrdenada=[]
				columnActual=[]	

				for k in range(0, cantxwidxpest):
					datoaux = request.COOKIES[widxp[k]]
					ind = 0
					for each in datoaux.split('&'):
						if ind == 0:
							nrocol=int(each)
						if ind == 5:
							nrobox=int(each)
							if nrocol == idcolumna:
								if nrobox == idboxunder:
									listCaja.append(nrobox)
									listCaja.append(idcaja)
								elif nrobox != idcaja:
									listCaja.append(nrobox)		
						ind=ind+1
				
				cantidad_elementos=len(listCaja)
				listCajaOrdenada=listCaja[:]
				listCajaOrdenada.sort()
				
				#return render_to_response('webpage/inicio.html', {"prub": listCajaOrdenada})
				for k in range(0, cantidad_elementos):
					eliminar="w"+str(listCaja[k])
					responsen.delete_cookie(eliminar)
						
				widAcambiar=[]
				
				for j in range(0, cantidad_elementos):
					valorBuscado="w"+str(listCaja[j])
					valorEncontrado=widxp.index(valorBuscado)
					widAcambiar.append(valorEncontrado)
				
				for k in range(0, cantidad_elementos):
					responsen.set_cookie("w"+str(listCajaOrdenada[k]), str(idcolumna)+"&"+datosin_nrocaja_primera[widAcambiar[k]]+"&"+str(listCajaOrdenada[k])+"&"+datosin_nrocaja_segunda[widAcambiar[k]], 365*24*60*60)
				
				return responsen
	#return render_to_response('webpage/inicio.html', {"prub": "w"+str(listaordenada[0]), "prueb": datosin_nrocaja_segunda[widAcambiar[1]]})			
	
def estadowid(request):
	idcaja = int(request.GET.get('numerocaja'))
	idestado = int(request.GET.get('estado'))
	usuario_id = request.user.id
	is_auth = request.user.is_authenticated()
	
	if(is_auth):
		wid=Pestxwidxparam.objects.get(nrocajacontenedora=idcaja)
		wid.estado=idestado
		wid.save()
	else:
		response = HttpResponseRedirect('/inicio/')
		wid = request.COOKIES["w"+str(idcaja)]
		ind=0
		for each in wid.split('&'):
				if ind==0:
					datosWid=each+"&"
				if ind==7:
					estado=each
				elif ind!=0 and ind!=7:
					datosWid=datosWid+each+"&"
				ind=ind+1
		response.delete_cookie("w"+str(idcaja))
		response.set_cookie("w"+str(idcaja), datosWid+str(idestado), 365*24*60*60)
		return response

def buscadorgoogle(request):
	valbuscado = request.GET.get('valorbuscado')
	user_id = request.user.id
	is_auth = request.user.is_authenticated()
	if(is_auth):
		busquedaDatos = Q(usuario__id__exact=user_id)
		es_none=Pestxdatosxgoogle.objects.filter(busquedaDatos).count()
		if es_none == 0:
			#return render_to_response('webpage/inicio.html', {"prub": 'Entro'})
			idpest = Q(usuario=user_id) & Q(estado__exact=1)
			estadoviejo = Pestanha.objects.get(idpest)
			estadoviejo.estado = 0
			estadoviejo.save()
			valormaximo = Pestanha.objects.aggregate(Max('id'))
			valpesmax = valormaximo['id__max']
			valpesmax = valpesmax + 1
			newtab = Pestanha(id=valpesmax, usuario_id=user_id, tema_id=1, layout_id=1, nombre='Google', estado=1)
			newtab.save()
			valormax = Pestxdatosxgoogle.objects.aggregate(Max('id'))
			if valormax['id__max'] == None:
				p = Pestxdatosxgoogle(id=1, usuario_id=user_id, pestanha=newtab, datos=valbuscado)
				p.save()
			else:
				vmax = valormax['id__max'] 
				vmax= vmax + 1
				p = Pestxdatosxgoogle(id=vmax, usuario_id=user_id, pestanha=newtab, datos=valbuscado)
				p.save()
				
		elif es_none != 0:
			busquedaDatos = Q(usuario=user_id)
			datosGoogle = Pestxdatosxgoogle.objects.get(busquedaDatos)
			idgooglesearch = datosGoogle.pestanha.id
			valsearch = datosGoogle.datos
			idpest = Q(usuario=user_id) & Q(estado__exact=1)
			estadoviejo = Pestanha.objects.get(idpest)
			estadoviejo.estado = 0
			estadoviejo.save()
			idpestanha = Q(usuario=user_id) & Q(id=idgooglesearch)
			estadonuevo = Pestanha.objects.get(idpestanha)
			estadonuevo.estado = 1
			estadonuevo.save()
			datosGoogle.datos = valbuscado
			datosGoogle.save()
		return HttpResponseRedirect('/inicio/')
	else:
		response = HttpResponseRedirect('/inicio/')
		es_noneidgoogle=request.COOKIES.get("idGS", None)
		if es_noneidgoogle:	
		    if "idGS" in request.COOKIES:
				idg = request.COOKIES["idGS"]
				idgoogle =  string.atoi(idg,10)
				if "valor_buscado" in request.COOKIES:
					response.delete_cookie("valor_buscado")
					response.set_cookie("valor_buscado", valbuscado, 365*24*60*60)
					response.delete_cookie("pes_active")
					response.set_cookie("pes_active", idgoogle, 365*24*60*60)
		else:
			if "pes_active" in request.COOKIES:
				pestActiva = int(request.COOKIES["pes_active"])
				if "t"+str(pestActiva) in request.COOKIES:
					temaActual = request.COOKIES["t"+str(pestActiva)]
				if "nt"+str(pestActiva) in request.COOKIES:
					numtema = int(request.COOKIES["nt"+str(pestActiva)])
			if "nro_pes" in request.COOKIES:
				cant_pes = request.COOKIES["nro_pes"]
				cp = string.atoi(cant_pes,10)
				cp = cp + 1
			response.set_cookie("nro_pes", cp, 365*24*60*60)
			response.set_cookie("np"+str(cp), 'Google', 365*24*60*60)
			response.set_cookie("pes_active", cp, 365*24*60*60)
			response.set_cookie("t"+str(cp), temaActual, 365*24*60*60)
			response.set_cookie("nt"+str(cp), numtema, 365*24*60*60)
			response.set_cookie("cantida_columna"+str(cp), 3, 365*24*60*60)
			response.set_cookie("modelo_columna"+str(cp), 1, 365*24*60*60)
			response.set_cookie("idGS", cp, 365*24*60*60)	
			response.set_cookie("valor_buscado", valbuscado, 365*24*60*60)
			response.set_cookie("cantida_columna"+str(cp), 1, 365*24*60*60)
			response.set_cookie("modelo_columna"+str(cp), 1, 365*24*60*60)
			response.set_cookie("widxpest"+str(cp), " ", 365*24*60*60)
			response.set_cookie("cantxwidxpest"+str(cp), 0, 365*24*60*60)				
		return response
	
